package com.tan.core.utils;

import java.util.function.Function;

/**
 * @author Tan
 * @description
 * @date 2025/2/9
 */
public class StringUtils {

    /**
     * @param [cs]
     * @description 判断字符串参数是否为空（包含 “null” 和 “undefined”）
     */
    public static boolean isEmpty(CharSequence cs) {
        if (cs == null || "null".contentEquals(cs) || "undefined".contentEquals(cs)) {
            return true;
        }
        return org.apache.commons.lang3.StringUtils.isEmpty(cs);
    }

    /**
     * @param [cs]
     * @description 判断字符串参数是否不为空（包含 “null” 和 “undefined”）
     */
    public static boolean isNotEmpty(CharSequence cs) {
        return !isEmpty(cs);
    }

    /**
     * @description 断字符串参数是否为空（包含 “null” 和 “undefined”）
     */
    public static boolean isBlank(CharSequence cs) {
        if (cs == null || "null".contentEquals(cs) || "undefined".contentEquals(cs)) {
            return true;
        }
        return org.apache.commons.lang3.StringUtils.isBlank(cs);
    }

    /**
     * @author Tan-Bowen
     * @description 断字符串参数是否不为空（包含 “null” 和 “undefined”）
     */
    public static boolean isNotBlank(CharSequence cs) {
        if (cs == null || "null".contentEquals(cs) || "undefined".contentEquals(cs)) {
            return false;
        }
        return !isBlank(cs);
    }

    /**
     * @author Tan-Bowen
     * @description 首字母小写
     */
    public static String toLowerCaseFirstOne(String s) {
        if (Character.isLowerCase(s.charAt(0)))
            return s;
        else
            return Character.toLowerCase(s.charAt(0)) + s.substring(1);
    }


    public static String append(String a, String b) {
        return a + b;
    }

    public static String eq(boolean crn, String val) {
        if (crn) {
            return val;
        }
        return null;
    }

    public static <T, E> boolean isNotNull(T t, Function<T, E> fuc) {
        if (t == null) {
            return false;
        }
        E v = fuc.apply(t);
        return v != null && !isBlank(v.toString());
    }
}
